###
 # @Description: 手机话费充值模拟
 # @Version: 2.0
 # @Autor: gang
 # @Date: 2020-09-24 10:55:55
 # @LastEditors: gang
 # @LastEditTime: 2020-09-24 17:55:50
### 
#!/bin/bash
export LANG="zh_CN.UTF-8"

:<<EOF
手机充值10元，每发一次短信（输出当前余额）话费1角五分钱，当余额低于一角五分时，
就不能再发短信了，提示“余额不足，请充值”（允许用户充值后继续发送短信），用while实现

1角=10分
1元=10角
10元=1000分
EOF
sum=20
msg_free=15
msg_count=0

function menu(){
    cat <<DESC
    =======================================
    温馨提示：当前余额为${sum}分，每条短信需要${msg_free}分
    1、充值
    2、发消息
    3、退出
    请输入以上菜单编号可进行操作
    =======================================
DESC
}

# 充值金额
function recharge(){
    read -p "请输入充值金额（元）：" money
    #判断金额是否为整数
    expr $money + 1 &> /dev/null
    if [ $? -ne 0 ] 
        then
        echo "The money your input is error,must be int."
    else
        money=$(($money*100))
        sum=$((sum+money))
        echo "您的当前余额为（分）${sum}"
    fi
}

###
 # @description: 发送短信
 # @param {type} 
 # @return {type} 
 # @author: gang
###
function sendMessage(){
    if [ ${sum} -lt ${msg_free} ]
        then
        printf "余额不足${sum},请充值\n."
    else
        while true
        do
            read -p "请输入短信内容（不能有空格）：" msg
            sum=$((sum-msg_free))
            printf "Send ${msg} successfully\n"
            printf "当前余额为：${sum}\n"
            [ ${sum} -lt ${msg_free} ] && {
                printf "余额不足，剩余${sum}分\n"
                return 1
            }
        done
    fi
}

function main(){
    while true
    do
        #1、执行菜单函数
        menu

        #2、发送短信判断
        read -p "请输入数字「1，2，3」选择：" number
        case "${number}" in
            1)
                recharge
                ;;
            2)
                sendMessage
                ;;
            3)
                exit 1
                ;;
            *)
                printf "选择错误，必须选择「1，2，3」\n"
        esac
    done
}

main